package innerclass_;

public class MenberInnerClass {
    public static void main(String[] args) {
        Outer05 outer05 = new Outer05();
        outer05.fun();

        //（1）
        Outer05.Inner x=outer05.new Inner();//在其他类访问内部成员类要先有一个外部类的对象，对象.new Inner（）
        x.say();//跟普通类的对象一样，不能直接访问私有属性和方法了

        //(2)
        Outer05.Inner x1= outer05.getInnerInstance();//这个方式更好用
        x1.say();

        //(3)
        Outer05.Inner x3=new Outer05().new Inner();
        x3.say();

    }
}
class Outer05{
    private int n1=10;
    private String name="张三";


    //作用域整个类体
    public class Inner{//成员内部类，可以添加任意修饰符，也可以访问外部类的属性和方法
        private int n2=200;
        private  int n1 = 500;
        public void say(){
            System.out.println("This is Inner class , name = "+name+" n1 = "+n1+"  Outer05.this.n1="+Outer05.this.n1);
        }
    }

    public Inner getInnerInstance(){
        return new Inner();
    }

    public void fun(){
        Inner hh=new Inner();
        hh.say();
        System.out.println(hh.n2);//可以直接访问内部类的属性和方法（包括私有的）
    }
}
